package leetcode_ago.LinearList;

/**
 * 将两个升序链表合并为一个新的升序链表并返回。
 * 新链表是通过拼接给定的两个链表的所有节点组成的。
 * 难点：引用的使用
 */
public class Num21_MergeTwoList {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        //判空
        if(list1==null){
            return list2;
        }
        if (list2==null){
            return list1;
        }
        //此时两个链表都不为空
        //创建链表虚拟头节点，使用尾插进行插入
        ListNode dummyHead=new ListNode(-101);
        ListNode cur=dummyHead;
        while(list1!=null&&list2!=null){
            if(list1.val< list2.val){
                cur.next=list1;
                cur=list1;
                //条件更新
                list1=list1.next;
            }else{
                cur.next=list2;
                cur=list2;
                list2=list2.next;
            }
            //此时list1或者list2为null
            if(list1==null){
                cur.next=list2;
            }else{
                cur.next=list1;
            }
        }
        return dummyHead.next;
    }
}
